Page({
  data:{
    record:null
  },
  onLoad(options){
    // 兼容两种进入方式：
    // 1) 传入 record=encodeURIComponent(JSON.stringify(obj)) （旧设计）
    // 2) 只传 id=123 （当前聚合列表实现）
    if(options.record){
      try{
        const rec = JSON.parse(options.record)
        this.setData({record:this._normalizeRecord(rec)})
        this.fetchDetail(rec.id)
        return
      }catch(e){
        console.error('解析record失败',e)
      }
    }
    if(options.id){
      // 仅有 id 时，先放入占位对象，立即请求详情
      const id = parseInt(options.id,10)
      if(!isNaN(id)){
        this.setData({record:{ id }})
        this.fetchDetail(id)
      }
    }
  },
  _normalizeRecord(rec){
    if(!rec) return rec
    const apiBase = (getApp().globalData.apiBaseUrl || '').replace(/\/$/,'')
    // 提取 origin (协议+主机+端口)，避免把 /api/miniprogram 当作静态前缀
    const originMatch = apiBase.match(/^(https?:\/\/[^/]+)/i)
    const origin = originMatch ? originMatch[1] : apiBase.replace(/\/api.*/, '')
    const toFull = (u)=>{
      if(!u || typeof u !== 'string') return null
      let val = u.trim()
      // 已是完整 URL 直接返回（不再做“纠错”）
      if(/^https?:\/\//i.test(val)) return val
      if(!val.startsWith('/')) val = '/' + val
      // 如果是正确的媒体相对路径，使用 origin 拼接；禁止加 api 前缀
      if(val.startsWith('/media/')) return origin + val
      // 其它相对路径（理论上不该出现），兜底也用 origin 拼
      return origin + val
    }
    if(Array.isArray(rec.image_urls)){
      rec.image_urls = rec.image_urls.map(toFull).filter(Boolean)
    }
    return rec
  },
  fetchDetail(id){
    const app = getApp()
    const { getToken } = require('../../utils/auth')
    console.log('fetchDetail开始请求，id:', id, 'url:', `${app.globalData.apiBaseUrl}/intervention/${id}`)
    wx.request({
      url:`${app.globalData.apiBaseUrl}/intervention/${id}`,
      method:'GET',
      header:{'Authorization':`Bearer ${getToken()}`},
      success:res=>{
        console.log('fetchDetail响应:', res.statusCode, res.data)
        if(res.statusCode === 200 && res.data && res.data.success){
          // 合并最新字段
          const mergedRecord = this._normalizeRecord(Object.assign({},this.data.record,res.data.data))
          console.log('设置record:', mergedRecord)
          this.setData({record: mergedRecord})
        } else {
          console.error('fetchDetail失败:', res.data)
          wx.showToast({
            title: res.data?.message || '加载详情失败',
            icon: 'none'
          })
        }
      },
      fail: err => {
        console.error('fetchDetail请求失败:', err)
        wx.showToast({
          title: '网络请求失败',
          icon: 'none'
        })
      }
    })
  },
  previewImage(e){
    const url = e.currentTarget.dataset.url
    const urls = (this.data.record && this.data.record.image_urls) ? this.data.record.image_urls : [url]
    wx.previewImage({current:url,urls})
  }
})
